package com.tian.core.redis;

/**
 * redis操作接口
 * @author YangTao
 * @date 2025/4/18
 */
public interface JedisManager {

    /**
     * 保存
     *
     * @param key   键
     * @param value 值
     */
    void set(String key, String value);

    /**
     * 保存并设置生存时间
     *
     * @param key     键
     * @param value   值
     * @param seconds 时间，秒s为单位
     */
    void set(String key, String value, Integer seconds);

    /**
     * 根据key查询
     *
     * @param key 键
     * @return 值
     */
    String get(String key);

    /**
     * 删除
     *
     * @param key 键
     */
    void del(String key);

    /**
     * 根据key设置生存时间
     *
     * @param key     键
     * @param seconds 时间，秒s为单位
     */
    void expire(String key, Integer seconds);

    /**
     * value加一
     * 注意key必须是整型
     *
     * @param key 键
     * @return 加一后的结果
     */
    Long incr(String key, Long value);

    /**
     * 将Object保存至Redis
     *
     * @param key 键
     * @param object 对象
     */
    void setObject(String key, Object object);

    /**
     * 将Object保存至Redis并设置生存时间
     * @param key
     * @param object
     * @param seconds
     */
    void setObject(String key, Object object, Integer seconds);

    /**
     * 根据key查询,获取Obejct
     *
     * @param key 键
     * @return 对象
     */
    Object getObject(String key);
}
